package com.anolesoft.twelvePlan.mapper;

import cn.hutool.core.util.StrUtil;
import com.anolesoft.twelvePlan.entity.MesPlanJiedianDO;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.*;
import org.apache.ibatis.jdbc.SQL;

import java.util.List;

/**
 * @author zyq
 * @date 2022/8/10
 */
@Mapper
public interface MesPlanJiedianMapper extends BaseMapper<MesPlanJiedianDO> {
    @SelectProvider(type = createSQL.class, method = "queryJiedianSQL")
    List<MesPlanJiedianDO> queryJiedian(@Param("mesPlanJiedianDO")MesPlanJiedianDO mesPlanJiedianDO, Page<MesPlanJiedianDO> page);
    public static class createSQL {
        public static String queryJiedianSQL(@Param("mesPlanJiedianDO")MesPlanJiedianDO mesPlanJiedianDO, Page<MesPlanJiedianDO> page){
            return new SQL(){
                {
                    StringBuffer sql = new StringBuffer();
                    sql.append(" a.objuid, a.jx, a.partid, a.jgdw, a.zjgxnr, a.gongxu_id, a.worktime from mes_plan_jiedian a");
                    sql.append(" where a.delete_flag = 0");
                    if (!StrUtil.isEmptyOrUndefined(mesPlanJiedianDO.getJx())){
                        sql.append(" and a.jx = #{mesPlanJiedianDO.jx}");
                    }
                    if (!StrUtil.isEmptyOrUndefined(mesPlanJiedianDO.getPartid())){
                        sql.append(" and a.partid = #{mesPlanJiedianDO.partid}");
                    }
                    SELECT(sql.toString());
                }
            }.toString();
        }
    }

    @Select("select count(*) from mes_plan_jiedian a" +
            " where a.delete_flag = 0 and a.jx = #{mesPlanJiedianDO.jx}" +
            " and a.partid = #{mesPlanJiedianDO.partid}" +
            " and a.gongxu_id = #{mesPlanJiedianDO.gongxuId}")
    int repeatJiedian(@Param("mesPlanJiedianDO")MesPlanJiedianDO mesPlanJiedianDO);

    @Insert("insert into mes_plan_jiedian(jx, partid, jgdw, zjgxnr, gongxu_id, worktime, crerate_id)" +
            " values (#{mesPlanJiedianDO.jx}, #{mesPlanJiedianDO.partid}, #{mesPlanJiedianDO.jgdw}," +
            " #{mesPlanJiedianDO.zjgxnr}, #{mesPlanJiedianDO.gongxuId}, #{mesPlanJiedianDO.worktime}," +
            " #{mesPlanJiedianDO.crerateId})")
    int insertJiedian(@Param("mesPlanJiedianDO")MesPlanJiedianDO mesPlanJiedianDO);

    @Update("update mes_plan_jiedian a set a.jx = #{mesPlanJiedianDO.jx}" +
            " and a.partid = #{mesPlanJiedianDO.partid}" +
            " and a.jgdw = #{mesPlanJiedianDO.jgdw}" +
            " and a.zjgxnr = #{mesPlanJiedianDO.zjgxnr}" +
            " and a.gongxu_id = #{mesPlanJiedianDO.gongxuId}" +
            " and a.worktime = #{mesPlanJiedianDO.worktime}" +
            " and a.modify_id = #{mesPlanJiedianDO.modifyId}" +
            " and a.modify_time = sysdate" +
            "where a.objuid = #{mesPlanJiedianDO.objuid}")
    int updateJiedian(@Param("mesPlanJiedianDO")MesPlanJiedianDO mesPlanJiedianDO);

    @Update("update mes_plan_jiedian a set a.delete_flag = 1 and a.delete_id = #{mesPlanJiedianDO.deleteId}" +
            " and a.delete_time = sysdate where a.objuid = #{mesPlanJiedianDO.objuid}")
    int deleteJiedian(@Param("mesPlanJiedianDO")MesPlanJiedianDO mesPlanJiedianDO);
}
